package com.googlecode.messwertepi.configuration;

import com.googlecode.messwertepi.util.GpioPin;
import org.apache.commons.configuration.HierarchicalConfiguration;

/**
 * Created by eike on 25.06.14.
 */
public interface Configuration
{
    /**
     * Returns the file, that will be used to print the data..
     *
     * @return the printers temp file
     */
    public String getPrinterTempFile();

    /**
     * Returns the width of the main window.
     *
     * @return width of the main window
     * @throws ConfigurationException if the property can not be read from the configuration
     */
    public int getGuiWidth();

    /**
     * Returns the height of the main window.
     *
     * @return height of the main window
     * @throws ConfigurationException if the property can not be read from the configuration
     */
    public int getGuiHeight();

    /**
     * Returns the pin, that is used to move the cursor down.
     *
     * @return gpio pin
     * @throws ConfigurationException if the property is not a valid gpio pin
     */
    public GpioPin getPinDown();

    /**
     * Returns the pin, that is used to move the cursor up.
     *
     * @return gpio pin
     * @throws ConfigurationException if the property is not a valid gpio pin
     */
    public GpioPin getPinUp();

    /**
     * Returns the pin, that is used to confirm the input..
     *
     * @return gpio pin
     * @throws ConfigurationException if the property is not a valid gpio pin
     */
    public GpioPin getPinConfirm();

    /**
     * Returns the pin, that is used to print the data.
     *
     * @return gpio pin
     * @throws ConfigurationException if the property is not a valid gpio pin
     */
    public GpioPin getPinPrint();

    /**
     * TODO: comment
     * @return
     */
    public String getSerialPortDevice();

    /**
     * TODO: comment
     * @return
     */
    public int getSerialPortBaudRate();

    /**
     * TODO: comment
     * @return
     */
    public int getSerialPortDataBits();

    /**
     * TODO: comment
     * @return
     */
    public int getSerialPortStopBits();

    /**
     * TODO: comment
     * @return
     */
    public int getSerialPortParity();

    /**
     * TODO: comment
     * @return
     */
    public int getSerialPortFlowControl();
}
